<h2>DESCRIPTION</h2>

<em>i.pca</em> is an image processing program based on the
algorithm provided by Vali (1990), that processes n
(n&nbsp;&gt;=&nbsp;2) input raster map layers and produces n output
raster map layers containing the principal components of
the input data in decreasing order of variance
("contrast").  The output raster map layers are assigned
names with .1, .2, ... .n suffixes. The numbers used as suffix 
correspond to percent importance with .1 being the scores of the 
principal component with the highest importance.

<p>
The current geographic region definition and MASK settings are 
respected when reading the input raster map layers. When the rescale
option is used, the output files are rescaled to fit the min,max range.

<p>
The order of the input bands does not matter for the output maps 
(PC scores), but does matter for the vectors (loadings), since each 
loading refers to a specific input band.

<p>
If the output is not rescaled (<em>rescale=0,0</em>, the output raster 
maps will be of type DCELL, otherwise the output raster maps will be of 
type CELL.

<p>By default, the values of the input raster maps are centered for each 
map separately with <em>x - mean</em>. With <em>-n</em>, the input raster 
maps are normalized for each map separately with <em>(x - mean) / stddev</em>. 
Normalizing is highly recommended when the input raster maps have different
units, e.g. represent different environmental parameters. 

<p>The <em>-f</em> flag, together with the <em>percent</em> option, can 
be used to remove noise from input bands. Input bands will be 
recalculated from a subset of the principal components (inverse PCA). 
The subset is selected by using only the most important (highest 
eigenvalue) principal components which explain together <em>percent</em> 
percent variance observed in the input bands.


<h2>NOTES</h2>

Richards (1986) gives a good example of the application of principal
components analysis (PCA) to a time series of LANDSAT images of a burned
region in Australia.
<p>
Eigenvalue and eigenvector information is stored in the output maps'
history files. View with <em>r.info</em>.


<h2>EXAMPLE</h2>

PCA calculation using Landsat7 imagery in the North Carolina sample dataset:

<div class="code"><pre>
g.region raster=lsat7_2002_10 -p
i.pca in=lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40,lsat7_2002_50,lsat7_2002_70 \
    out=lsat7_2002_pca

r.info -h lsat7_2002_pca.1
   Eigen values, (vectors), and [percent importance]:
   PC1   4334.35 ( 0.2824, 0.3342, 0.5092,-0.0087, 0.5264, 0.5217) [83.04%]
   PC2    588.31 ( 0.2541, 0.1885, 0.2923,-0.7428,-0.5110,-0.0403) [11.27%]
   PC3    239.22 ( 0.3801, 0.3819, 0.2681, 0.6238,-0.4000,-0.2980) [ 4.58%]
   PC4     32.85 ( 0.1752,-0.0191,-0.4053, 0.1593,-0.4435, 0.7632) [ 0.63%]
   PC5     20.73 (-0.6170,-0.2514, 0.6059, 0.1734,-0.3235, 0.2330) [ 0.40%]
   PC6      4.08 (-0.5475, 0.8021,-0.2282,-0.0607,-0.0208, 0.0252) [ 0.08%]

d.mon wx0
d.rast lsat7_2002_pca.1
# ...
d.rast lsat7_2002_pca.6
</pre></div>

In this example, the first two PCAs (PCA1 and PCA2) already explain 94.31% of
the variance in the six input channels.

<p>
<center>
<img src="i_pca_result.png" alt="PCA result"><br>
Resulting PCA maps calculated from the Landsat7 imagery (NC, USA)
</center>

<h2>SEE ALSO</h2>

Richards, John A.,
<b>Remote Sensing Digital Image Analysis</b>,
Springer-Verlag, 1986.

<p>
Vali, Ali R., Personal communication,
Space Research Center, University of Texas, Austin, 1990.

<p>
<em>
<a href="i.cca.html">i.cca</a>,
<a href="g.gui.iclass.html">g.gui.iclass</a>,
<a href="i.fft.html">i.fft</a>,
<a href="i.ifft.html">i.ifft</a>,
<a href="m.eigensystem.html">m.eigensystem</a>,
<a href="r.covar.html">r.covar</a>,
<a href="r.mapcalc.html">r.mapcalc</a>
<p>
<em>
<a href="https://grasswiki.osgeo.org/wiki/Principal_Components_Analysis">Principal Components Analysis article</a>
(GRASS Wiki)
</em>


<h2>AUTHORS</h2>

David Satnik, GIS Laboratory
<p>Major modifications for GRASS 4.1 were made by <br>
Olga Waupotitsch and
Michael Shapiro,
U.S.Army Construction Engineering 
Research Laboratory
<p>Rewritten for GRASS 6.x and major modifications by <br>
Brad Douglas

<!--
<p>
<i>Last changed: $Date$</i>
-->
